package mianshi;

import niuke.TreeNode;

/**
 * description:
 * author:张腾
 * date:2021-07-21
 */

/**
 * 实现一个函数，检查二叉树是否平衡。在这个问题中，平衡树的定义如下：任意一个节点，其两棵子树的高度差不超过 1。
 */
public class _04_04 {
    public boolean isBalanced(TreeNode root) {
        return getDepth(root)==-1?false:true;
    }

    public int getDepth(TreeNode root){
        if(root==null) return 0;
        int left = getDepth(root.left);
        if(left==-1) return -1;
        int right = getDepth(root.right);
        if(right==-1) return -1;

        return Math.abs(left-right)<=1?Math.max(left,right)+1:-1;
    }
}
